package com.zijidelu.luframework.api.converter;

import com.zijidelu.luframework.api.model.Request;
import com.zijidelu.luframework.base.model.DataModel;

import java.util.List;

/**
 * DTO Request 转换器接口
 *
 * @author ZIJIDELU
 * @datetime 2025/10/29 22:06
 */
public interface DataRequestConverter<D extends DataModel, Q extends Request> {
    /**
     * 将请求对象转换为 DTO。
     *
     * @param request 请求对象
     * @return DTO 实例
     */
    D requestToDto(Q request);

    /**
     * 将 DTO 转换为请求对象。
     *
     * @param dto DTO 实例
     * @return 请求对象
     */
    Q dtoToRequest(D dto);

    /**
     * 批量转换 Request → DTO。
     *
     * @param requests 请求对象列表
     * @return DTO 列表
     */
    List<D> requestToDtoList(List<Q> requests);

    /**
     * 批量转换 DTO → Request。
     *
     * @param dtos DTO 列表
     * @return 请求对象列表
     */
    List<Q> dtoToRequestList(List<D> dtos);
}
